<?php 
/**
 * @Name ActionLog 
 * @Title 日志控制器
 * @Extends app\admin\controller\AdminCore * @Modifiers public
 * @Auth Ghj<912524639@qq.com>
 * @Time 2018年08月09日 
 * @Site http:// www.thinkgms.com/
 */
namespace app\admin\controller;
use app\admin\controller\AdminCore;

class ActionLog extends AdminCore{
	
	//当前控制器的模型
	protected $Model;
	
	//当前控制器的数据表
	protected $Db;
	
	//当前控制器的验证器
	protected $Validate;
	
	//当前控制器的主键
	protected $Pk='id';
	
	//搜索预设
	protected $SerchFieldPre=[
		'id'		=> '=',
		'action_id'	=> '=',
		'user_id'	=> '=',
		'action_ip'	=> '=',
		'model'		=> '=',
		'record_id'	=> '=',
		'remark'	=> 'Like',
		'create_time'	=> 'DataTime',
	];
	
	/**
	 * @Name initialize
	 * @Title 初始化方法
	 * @Modifiers protected
	 * @Auth Ghj<912524639@qq.com>
	 * @Time 2018年08月09日 
	 */
    protected function initialize()
    {
        // 继承父模型的初始化方
		parent::initialize ();
		$this->Validate	= validate ('app\admin\validate\ActionLog');
		$this->Model	= model('app\admin\model\ActionLog');
		$this->Db		= db('ActionLog');
    }


	/**
	 * @Name index
	 * @Title 首页
	 * @Modifiers public
	 * @Auth Ghj<912524639@qq.com>
	 * @Time 2018年08月09日 
	 */
	public function index() {
		// 判断请求类型
		if ($this->request->isPost ()) {
			// 获取请求数据
			$Parm = input ( 'post.' );
			// 调用_Serch方法获取 查询条件
			$Map = _SerchFieldAssembly ( $Parm ,$this->SerchFieldPre);
			// 获取符合条件的数据总数
			$Total = $this->Model->where ( $Map )->count ();
			// 判断数据总数是否为0
			if ($Total == 0) {
				// 防止显示异常 将$List设置为''
				$List = '';
			} else {
				// 调用_ExtSort函数获取 排序条件
				$Sort = _ExtSort ( $Parm ['sort'] );
				// 查询符合条件的数据
				$List = $this->Model->where ( $Map )->order ( $Sort )->limit ( $Parm ['start'] . ',' . $Parm ['limit'] )->select ();
				$_Userid = [];
				$_Actionid = [];
				foreach($List as $one){
					//获取触发用户
					$_Userid[] = $one['user_id'];
					//获取触发行为
					$_Actionid[] = $one['action_id'];
				}
				$_UserList = db('User')->where([['id','in',$_Userid]])->column('username,truename','id');
				$_ActionList = db('Action')->where([['id','in',$_Actionid]])->column('name,title','id');
				foreach($List as $k => $one){
					//获取触发用户
					if(array_key_exists($one['user_id'],$_UserList)){
						$List[$k]['user_name'] = $_UserList[$one['user_id']]['truename'].' [ '.$_UserList[$one['user_id']]['username'].' ]['.$one['user_id'].']';
					}else{
						$List[$k]['user_name'] = '<strong style="color:#f00">'.$one['user_id'].'</strong>';
					}
					//获取触发行为
					if(array_key_exists($one['action_id'],$_ActionList)){
						$List[$k]['action_name'] = $_ActionList[$one['action_id']]['name'];
						$List[$k]['action_title'] = $_ActionList[$one['action_id']]['title'];
					}else{
						$List[$k]['action_name'] = '<strong style="color:#f00">'.$one['action_id'].'</strong>';
						$List[$k]['action_title'] = '<strong style="color:#f00">'.$one['action_id'].'</strong>';
					}
				}
			}
			// 封装返回数据
			$Res = ['total' => $Total,'rows' => $List];
			// 返回json数据
			return json ( $Res );
		} else {
			// 返回视图
			return view ();
		}
	}
	
	/**
	 * 查看
	 */
	public function look() {
		// 获取参数
		$_ID = input ( $this->_Pk, '' );
		// 验证参数
		if ($_ID == '') {
			// 参数异常 返回错误信息
			return _Code ( '101', '参数错误' );
		}
		// 读取数据
		$_Data = $this->_Model->where ([$this->_Pk => $_ID ])->find ();
		// 判断数据是否正确
		if (! $_Data) {
			// 返回错误信息
			return _Code ( '201', '数据不存在' );
		}
		
		$_User = db('User')->where(['id'=>$_Data['user_id']])->find();
		//获取触发用户
		if($_User){
			$_Data['user_name'] = $_User['username'];
			$_Data['user_truename'] = $_User['truename'];
		}else{
			$_Data['user_name'] = '不存在';
			$_Data['user_truename'] = '不存在';
		}
		$_Action = db('Action')->where(['id'=>$_Data['action_id']])->find();
		//获取触发行为
		if($_Action){
			$_Data['action_name'] = $_Action['name'];
			$_Data['action_title'] = $_Action['title'];
		}else{
			$_Data['action_name'] = '不存在';
			$_Data['action_title'] = '不存在';
		}
		// 返回json数据
		return _Code ( '200', '成功', $_Data );
	}
	
	/**
	 * 删除
	 */
	public function del() {
		// 实例化请求类
		$Request = request ();
		// 判断请求类型
		if ($Request->isPost ()) {
			// 获取参数
			$_Type = input ( 't', '' );
			// 验证参数
			if (!in_array($_Type,['a','y','m'])) {
				// 参数异常 返回错误信息
				return _Code ( '101', '参数错误' );
			}
			if( $_Type == 'a' ){
				$_Map[] = ['id','gt',0];
			}
			if( $_Type == 'y' ){
				$_Map[] = ['create_time','gt',strtotime("-1 month")];
			}
			if( $_Type == 'm' ){
				$_Map[] = ['create_time','gt',strtotime("-1 year")];
			}
			// 删除数据
			$_Res = $this->_Model->where($_Map)->delete ();
			// 判断执行结果
			if ($_Res) {
				// 返回成功
				return _Code ( '200', '成功' );
			} else {
				// 返回失败
				return _Code ( '201', '失败' );
			}
		}
	}
}